//
// Created by Ivor_ on 2022/3/13.
//

#ifndef PHYSICAL_COMPUTING_PACKAGE_INTEGRAL_H
#define PHYSICAL_COMPUTING_PACKAGE_INTEGRAL_H

#include <math.h>
#include <stdlib.h>

double igTrapezoidForPoints(int numberOfPoints, double** points);
double igTrapezoidForFunction(int numberOfEqualParts, double start, double end, double* constantParameters, double (*pFunction)());
double igSimpsonForPoints(int numberOfPoints, double** points);
double igSimpsonForFunction(int numberOfEqualParts, double start, double end, double* constantParameters, double (*pFunction)());
double igRombergForFunction(int order, double start, double end, double* constantParameters, double (*pFunction)());
double igTrapezoidSelfAdaptation(double start, double end, double eps, double* constantParameters, double (*pFunction)());
double igRombergSelfAdaptation(double start, double end, double eps, double* constantParameters, double (*pFunction)());
double igMcForFunction(int mcSteps, double start, double end, double* constantParameters, double (*pFunction)());

#endif //PHYSICAL_COMPUTING_PACKAGE_INTEGRAL_H
